#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
    demo2.py
    ~~~~~~~~~~~~~~~~~~~~~~~
    Description of this file
    :author: LiYang
    :copyright: (c) 2020, Tungee
    :date created: 2020/6/2
    :python version: 2.7
"""
import execjs
import js2py
import requests

toutiaohao_sign_js = """
function getcc(aaa){
//window.TAC && (console.log(userInfo.id + "" + a[t]),
// window = {};
// global.navigator = {};
// global.navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
window = global={};
global.document={};
global.document.body={};
global.location = {};
global.location.href = "https://www.toutiao.com/a6816498039964828174/";
global.location.protocol = "https:";
global.navigator = {
    userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
};
// global.screen = {
//     width: 1920,
//     height: 1080
// };
// window = {};
// global.navigator = {};
// global.navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
        return typeof e
    }
    : function (e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
    }
;
TAC = function () {
    function e(e, b, a, c, d, r) {
        null == r && (r = this);
        var n, i, o = {}, l = o.d = d ? d.d + 1 : 0;
        for (o["$" + l] = o,
                 i = 0; i < l; i++)
            o[n = "$" + i] = d[n];
        for (i = 0,
                 l = o.length = c.length; i < l; i++)
            o[i] = c[i];
        return f(e, b, a, o, r)[1]
    }
    function f(r, o, l, t, v, y) {
        function h(e) {
            S[++A] = e
        }
        function k() {
            return S[A--]
        }
        function m(e, f) {
            for (var b = a, c = "", d = 0; d < e.length; d++) {
                var r = e.charCodeAt(d);
                c += String.fromCharCode(b ^ r),
                    b = (b << 1) + d + f + 1 + (b >> 1) & 255
            }
            return c
        }
        null == v && (v = this);
        var g, C, x, I, S = [], A = 0;
        y && (g = y);
        for (var w = o + 2 * l; o < w;) {
            var z = 13 * i(r, o) % 241;
            if (o += 2,
            0 == (3 & z))
                if (0 == (3 & (z >>= 2))) {
                    if (0 == (z >>= 2))
                        return [1, S[A--]];
                    if (2 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            I = oprand[1],
                            S[++A] = +I;
                    else if (4 == z)
                        g = S[A--],
                            S[A] = S[A] * g;
                    else if (6 == z)
                        g = S[A--],
                            S[A] = S[A] != g;
                    else if (13 == z)
                        C = S[A--],
                            x = S[A--],
                            (I = S[A--]).x === f ? S[++A] = e(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);
                    else {
                        if (15 != z)
                            break;
                        oprand = n(r, o),
                            I = oprand[1],
                            S[A] = function (b, a) {
                                var c = function f() {
                                    var b = arguments;
                                    return e(r, f.pc, f.len, b, f.z, this)
                                };
                                return c.pc = b,
                                    c.len = a,
                                    c.x = f,
                                    c.z = t,
                                    c
                            }(o + 6, I - 4),
                            o += 2 * I - 2
                    }
                } else if (1 == (3 & z))
                    if (3 == (z >>= 2))
                        g = S[--A],
                            S[A] = g(S[A + 1]);
                    else if (5 == z)
                        S[A -= 1] = S[A][S[A + 1]];
                    else if (7 == z)
                        S[A] = --S[A];
                    else {
                        if (9 != z)
                            break;
                        g = S[A--],
                            S[A] = typeof g
                    }
                else if (2 == (3 & z))
                    if (6 == (z >>= 2))
                        S[A] = u(S[A]);
                    else if (8 == z)
                        g = S[A--],
                            oprand = n(r, o),
                            o += 2 * oprand[0],
                            S[A--][m(b[oprand[1]], oprand[1])] = g;
                    else {
                        if (10 != z) {
                            if (12 == z)
                                throw S[A--];
                            break
                        }
                        S[A] = ~S[A]
                    }
                else if (0 == (z >>= 2))
                    S[++A] = null;
                else if (2 == z)
                    g = S[A--],
                        S[A] = S[A] >= g;
                else if (9 == z)
                    g = k(),
                        C = k(),
                        t[0] = 65599 * t[0] + t[g].charCodeAt(C) >>> 0;
                else if (11 == z)
                    S[++A] = void 0;
                else {
                    if (13 != z)
                        break;
                    g = S[A--],
                        S[A] = S[A] && g
                }
            else if (1 == (3 & z))
                if (0 == (3 & (z >>= 2))) {
                    if (4 == (z >>= 2)) {
                        oprand = n(r, o),
                            I = oprand[1];
                        try {
                            if (c[d][2] = 1,
                            1 == (g = f(r, o + 6, I - 4, t, v))[0])
                                return g
                        } catch (y) {
                            if (c[d] && c[d][1] && 1 == (g = f(r, c[d][1][0], c[d][1][1], t, v, y))[0])
                                return g
                        } finally {
                            if (c[d] && c[d][0] && 1 == (g = f(r, c[d][0][0], c[d][0][1], t, v))[0])
                                return g;
                            c[d] = 0,
                                d--
                        }
                        o += 2 * I - 2
                    } else if (6 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            I = oprand[1],
                            S[A -= I] = p("x,y", "return new x[y](" + Array(I + 1).join(",x[++y]").substr(1) + ")")(S, A);
                    else if (8 == z)
                        g = S[A--],
                            S[A] = S[A] & g;
                    else if (10 != z)
                        break
                } else if (1 == (3 & z))
                    if (0 == (z >>= 2))
                        S[A] = !S[A];
                    else if (7 == z)
                        C = S[A--],
                            g = delete S[A--][C];
                    else if (9 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            S[A] = S[A][m(b[oprand[1]], oprand[1])];
                    else {
                        if (11 != z)
                            break;
                        g = S[A--],
                            S[A] = S[A] << g
                    }
                else if (2 == (3 & z))
                    if (1 == (z >>= 2))
                        S[++A] = g;
                    else if (3 == z)
                        g = S[A--],
                            S[A] = S[A] <= g;
                    else if (10 == z)
                        g = S[A -= 2][S[A + 1]] = S[A + 2],
                            A--;
                    else if (12 == z)
                        g = S[A],
                            S[++A] = g;
                    else {
                        if (14 != z)
                            break;
                        g = S[A--],
                            S[A] = S[A] || g
                    }
                else if (0 == (z >>= 2))
                    S[A] = !S[A];
                else if (2 == z)
                    oprand = n(r, o),
                        o += 2 * (I = oprand[1]) - 2;
                else if (4 == z)
                    g = S[A--],
                        S[A] = S[A] / g;
                else if (6 == z)
                    g = S[A--],
                        S[A] = S[A] !== g;
                else {
                    if (13 != z)
                        break;
                    S[++A] = v
                }
            else if (2 == (3 & z))
                if (0 == (3 & (z >>= 2)))
                    if (1 == (z >>= 2))
                        g = S[A--],
                            S[A] = S[A] > g;
                    else if (8 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            I = oprand[1],
                            C = A + 1,
                            S[A -= I - 1] = I ? S.slice(A, C) : [];
                    else if (10 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            I = oprand[1],
                            g = S[A--],
                            t[I] = g;
                    else {
                        if (12 != z)
                            break;
                        g = S[A--],
                            S[A] = S[A] >> g
                    }
                else if (1 == (3 & z))
                    if (0 == (z >>= 2))
                        S[++A] = s;
                    else if (2 == z)
                        g = S[A--],
                            S[A] = S[A] + g;
                    else if (4 == z)
                        g = S[A--],
                            S[A] = S[A] == g;
                    else if (11 == z)
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            I = oprand[1],
                            S[--A] = p("x,y", "return x " + m(b[I], I) + " y")(S[A], S[A + 1]);
                    else {
                        if (13 != z)
                            break;
                        g = S[A - 1],
                            C = S[A],
                            S[++A] = g,
                            S[++A] = C
                    }
                else if (2 == (3 & z))
                    if (1 == (z >>= 2))
                        oprand = n(r, o),
                            o += 2 * oprand[0],
                            S[++A] = m(b[oprand[1]], oprand[1]);
                    else if (3 == z)
                        S[A--] ? o += 6 : (oprand = n(r, o),
                            o += 2 * (I = oprand[1]) - 2);
                    else if (5 == z)
                        g = S[A--],
                            S[A] = S[A] % g;
                    else if (7 == z)
                        g = S[A--],
                            S[A] = S[A] instanceof g;
                    else {
                        if (14 != z)
                            break;
                        S[++A] = !1
                    }
                else if (4 == (z >>= 2))
                    oprand = n(r, o),
                        I = oprand[1],
                        c[d][0] && !c[d][2] ? c[d][1] = [o + 6, I - 4] : c[d++] = [0, [o + 6, I - 4], 0],
                        o += 2 * I - 2;
                else if (6 == z)
                    oprand = n(r, o),
                        o += 2 * oprand[0],
                        I = oprand[1],
                        S[++A] = t["$" + I];
                else {
                    if (8 != z)
                        break;
                    g = S[A--],
                        S[A] = S[A] | g
                }
            else if (0 == (3 & (z >>= 2)))
                if (1 == (z >>= 2))
                    oprand = n(r, o),
                        o += 2 * oprand[0],
                        I = oprand[1],
                        S[++A] = +m(b[I], I);
                else if (3 == z)
                    g = S[A--],
                        S[A] = S[A] - g;
                else if (5 == z)
                    g = S[A--],
                        S[A] = S[A] === g;
                else if (12 == z)
                    C = S[A--],
                        x = S[A--],
                        (I = S[A--]).x === f ? S[++A] = e(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);
                else {
                    if (14 != z)
                        break;
                    g = S[A],
                        S[A] = S[A - 1],
                        S[A - 1] = g
                }
            else if (1 == (3 & z))
                if (2 == (z >>= 2))
                    h(function (e) {
                        var f = 0
                            , b = e.length;
                        return function () {
                            var a = f < b;
                            a && h(e[f++]),
                                h(a)
                        }
                    }(S[A]));
                else if (4 == z)
                    oprand = n(r, o),
                        o += 2 * oprand[0],
                        I = oprand[1],
                        g = t[I],
                        S[++A] = g;
                else if (6 == z)
                    S[A] = ++S[A];
                else {
                    if (8 != z)
                        break;
                    g = S[A--],
                        S[A] = S[A] in g
                }
            else if (2 == (3 & z))
                if (5 == (z >>= 2))
                    ;
                else if (7 == z)
                    g = S[A--];
                else if (9 == z)
                    g = S[A--],
                        S[A] = S[A] ^ g;
                else {
                    if (11 != z)
                        break;
                    oprand = n(r, o),
                        I = oprand[1],
                        c[++d] = [[o + 6, I - 4], 0, 0],
                        o += 2 * I - 2
                }
            else if (1 == (z >>= 2))
                g = S[A--],
                    S[A] = S[A] < g;
            else if (8 == z)
                oprand = n(r, o),
                    o += 2 * oprand[0],
                    I = oprand[1],
                    S[A] = S[A][I];
            else if (10 == z)
                S[++A] = !0;
            else {
                if (12 != z)
                    break;
                g = S[A--],
                    S[A] = S[A] >>> g
            }
        }
        console.log(x);
        return [0, null]
    }
    var b = []
        , a = 0
        , c = []
        , d = 0
        , r = function (e, f) {
            var b = "" + e[f++] + e[f];
            return parseInt(b, 16)
        }
        , n = function (e, f) {
            var b = e[f++]
                , a = e[f]
                , c = parseInt("" + b + a, 16);
            if (c >> 7 == 0)
                return c >> 6 != 0 && (c = -64 | 63 & c),
                    [1, c];
            if (c >> 6 == 2) {
                var d = parseInt("" + e[++f] + e[++f], 16);
                return 0 != (32 & c) ? c = -32 | 31 & c : c &= 31,
                    c <<= 8,
                    d = c + d,
                    [2, d]
            }
            if (c >> 6 == 3) {
                var r = parseInt("" + e[++f] + e[++f], 16)
                    , n = parseInt("" + e[++f] + e[++f], 16);
                return 0 != (32 & c) ? c = -32 | 31 & c : c &= 31,
                    c <<= 16,
                    r <<= 8,
                    n = c + r + n,
                    [3, n]
            }
        }
        , i = function (e, f) {
            var b = e[f++]
                , a = e[f];
            return parseInt("" + b + a, 16)
        }
        , o = function (e, f) {
            var b = "" + e[f++] + e[f];
            return b = parseInt(b, 16),
                String.fromCharCode(b)
        }
        , l = function (e, f, b) {
            for (var a = "", c = 0; c < b; c++)
                a += o(e, f),
                    f += 2;
            return a
        }
        , t = function (e, f, a) {
            for (var c = 0; c < a; c++) {
                var d = n(e, f);
                f += 2 * d[0];
                var r = l(e, f, d[1]);
                b.push(r),
                    f += 2 * d[1]
            }
        }
        , s = this
        , p = s.Function
        , u = Object.keys || function (e) {
            var f = {}
                , b = 0;
            for (var a in e)
                f[b++] = a;
            return f.length = b,
                f
        }
    ;
    return function (f) {
        f.length;
        for (var c = 0, d = "", i = c; i < c + 16;)
            d += o(f, i),
                i += 2;
        if ("HNOJ@?RC" != d)
            throw new Error("error magic number " + d);
        n(f, c += 16);
        c += 8,
            a = 0;
        for (var l = 0; l < 4; l++) {
            var s = r(f, c + 2 * l);
            a += (3 & s) << 2 * l
        }
        c += 16;
        var p = n(f, c += 16)
            , u = p[1]
            , v = c += 2 * p[0];
        c += p[1];
        var y = n(f, c);
        y[1];
        c += 2 * y[0],
            b = [],
            t(f, c, y[1]),
            e(f, v, u, [])
    }
}(),
    TAC("484e4f4a403f5243001f1f38c9d881e5c0e8a3590000000000000000c0a28a020025806d4421131e014302023e22170d44441c21131e0343020440170f44441801131e01041c1680474421131e054302063e22170a44441c131e051e0717164444131e052602010a0118010a02101c161e444418002201170644441c131f0018011800131e081a001d0927041c002611020025c050cd020a250c4444131e0b1e0c0101001f06020d250d444421131e0e43020440001f07020f25805144131e10021102121a02221e1324131e140a010f2201173744441c0200251144441800221e15240a000f02163e00131e17012201171844441c21131e174302044022170a44441c131e171e1804001f08021925114444131e1a1a00221e1b240a000f001f09021c253a44442118004302043e2201170944441c1800263e1707444402000021180043021d3e171344441800170a4444021e16064444021f001800001f0a022025804b441801011708444402211f0102001f0618001f071807150039172c444418061801131e22221e2324131e22221e24240a000f18011e252a0a010f19281f0618072e1f0716511806001f0b02262580ce4402041f0621134318063e2201171044441c13221e15240a000f0227402201171744441c131e081e281e15221e2924130a010f0227402201170d44441c21131e0b4318063e2201171b44441c131e0b221e15240a000f221e2a24022b0a010f15003a2201170d44441c21131e2c4318063e2201171244441c131e2c221e15240a000f022d402201170d44441c21131e2e4318063e1706444420001b010b06260a0010011726444421131e2f4318063e2201171244441c131e2f221e15240a000f02304017064444200012001f0c023125809744131e321a001f06131e08221e332418060234131e081a00220200250c44441b020b00201d35001d360a030f1c131e37221e3824023918060a020f1c1322170844441c131e3722170a44441c131e371e3a170944441800201d351b010b07260a0010173144441322172244441c131e3b131e3c29158064392201171044441c131e3d131e3e2915806439170944441800201d35001f0d023f252d444421131e80404302044022171e44441c131e081e281e15221e2924131e80401e80410a010f0280423e001f0e028043258065441b010b06260a00100117805644028044131e2c42012201171144441c131e2c1e8044131e804541012201170a44441c02804613422201170a44441c02804713422201170a44441c02804813422201171044441c028049134202804a13423a0012001f0f02804b25818844131e2c1e804c17064444200002804d131e0842172d4444131e08221e804d24131e2c0a010f1f0602804c1806422201170b44441c02804e1806421706444420001322170944441c131e804f22170c44441c131e804f1e805022170f44441c131e804f1e80501e8051172844444604444406044444051c4444131e804f1e8050221e8051240a000f213e170644442000074604444406094444271f062000052f44440233131e084217244444131e08221e3324131e2c02804c131e081a0022211d805222121d80530a030f1c0702805402805502805602805702805802805902805a02805b02805c02805d02805e0a0b1f0602805f0280600280610a031f07180708031f0818082104171944441f0918071809191f0a13180a191706444420001665180608031f0818082104171b44441f0918061809191f0a131e0b180a191706444420001663131e0b08031f0818082104173144441f091809221e806224131e1002806302001a020a010f22170e44441c131e0b1809191e8064170644442000164d12001f100280652580c9441b010b07260a001017284444131e8066221e80672402130a010f1f0618060200250d44441b020b00201d8068001d80691b010b08260a001017805c4446044444062d4444271f0618061e806a131e806b1e806c3e22170e44441c131e806d1e2515003e170a44441800201d806805274444131e806d221e806e2402806f02000a020f1c131e806d221e80702402806f0a010f1c071b010b06260a001017284444131e80660122171444441c131e80712201170944441c131e8072170a44441800201d8068001f1102807325809f441b010b06260a00100117809044131e0b221e8074240280750a010f1f0618061e8076221e15240a000f221e807724131e100280780280791a0202000a020f221e2a2402807a0a010f15003a2201173344441c131e2c1e15221e15240a000f221e807724131e100280780280791a0202000a020f221e2a2402807a0a010f15003a2201171644441c131e2c1e8044221e15240a000f02807b400012001f1202807c25807144131e1002807d02001a021f061322170844441c131e2e22170b44441c131e2e1e807e17804944131e2e1e807e1f071807221e2a2402807f0a010f15003e2201171444441c1807221e2a240280800a010f15003e2201171044441c1806221e132418070a010f17064444200012001f13028081258095441b010b806c1e8082170d44441b010b806c1e80820046044444060a4444271f0602000005806d44131e0b221e8074240280750a010f1f061806221e8083240280840a010f1f071807221e8085240280860a010f1f081807221e80872418081e80880a010f1f091807221e80872418081e80890a010f1f0a180902808a28180a281f0b1b010b806c180b1d8082180b0007001f1402808b2581204402001f061b010b806c1e808c171244441b010b806c1e808c1f061680f24415051f070a001f08131e2c1e80441f0918092201170744441c0a001f0a15001f0b180b18073a1780af44460444440604444405809b44180a180b191f0c0a001f0d15001f0e180e180c1e253a17354444180c221e808d24180e0a010f171e4444180d221e808e24180c221e808d24180e0a010f1e808f0a010f1c180e2d1f0e1646180c1e80900200281f0e180c1e809117114444180e180c1e8091020028281f0e180e180c1e8092020028281f0e180e180d221e80932402000a010f281f0e1808221e808e24180e0a010f1c07180b2d1f0b16bf4f1808221e8093240280940a010f1f061b010b806c18061d808c1806221e80952415001584000a020f001f1502809625844e44131e2c1e8097221e8098240a000f1f06131e2c1e8099221e8098240a000f1f0715001f0815011f0915021f0a15031f0b15041f0c15051f0d180d1f0e02809a1f0f02809b1f1002809c1f1102809d1f1202809e1f1302809f1f140280a01f150280a11f161806221e2a24180f0a010f15003b170c444418081f0e168109441806221e2a2418110a010f15003b170c444418091f0e1680ef441806221e2a2418120a010f15003b2201171444441c1806221e2a240280a20a010f15003b2201171444441c1806221e2a240280a30a010f15003b170c4444180a1f0e1680a9441806221e2a2418130a010f15003b2201171344441c1806221e2a2418140a010f15003b2201171344441c1806221e2a2418150a010f15003b2201171444441c1806221e2a240280a40a010f15003b2201171444441c1806221e2a240280a50a010f15003b170c4444180b1f0e163944441806221e2a240280a60a010f15003b2201171444441c1806221e2a240280a70a010f15003b170c4444180c1f0e16084444180d1f0e1807221e2a2418100a010f15003b22170a44441c180e180840170a4444200016814c441807221e2a2418120a010f15003b2201171344441c1807221e2a2418110a010f15003b2201171444441c1807221e2a240280a80a010f15003b22170a44441c180e180a4022170a44441c180e180940170a444420001680f3441807221e2a2418160a010f15003b2201171344441c1807221e2a2418140a010f15003b2201171344441c1807221e2a2418150a010f15003b2201171344441c1807221e2a2418130a010f15003b22170a44441c180e180c4022170a44441c180e180b40170a44442000168086441807221e2a2418100a010f15003a22171344441c1807221e2a2418120a010f15003a22171344441c1807221e2a2418160a010f15003a22171344441c1807221e2a2418130a010f15003a22171344441c1807221e2a2418140a010f15003a22171344441c1807221e2a2418150a010f15003a1f171817180e180d3e4017064444200015001f1715011f1815021f1915041f1a15051f1b181b1f1c1806221e2a240280a90a010f15003b170c444418191f1c168085441806221e2a240280aa0a010f15003b2201171444441c1806221e2a240280ab0a010f15003b170c444418181f1c168054441806221e2a240280ac0a010f15003b170c444418171f1c163944441806221e2a240280ad0a010f15003b2201171444441c1806221e2a240280ae0a010f15003b170c4444181a1f1c16084444181b1f1c1b010b15260a0010221e8098240a000f1f1d1b010b14260a0010221e8098240a000f1f1e181c18173f22170a44441c181c18183f22172a44441c131e804f2201171f44441c131e2c1e80af221e15240a000f221e2a240280b00a010f15003b170644442000181c18173f22170a44441c181c18183f22171444441c181d221e2a2402804f0a010f15003b170644442000181c181a3e22170a44441c181e02003f17064444200012001f160280b12580d144261f0646044444060f4444271f07131e0b1e80b21f0605174444131e0b221e80b3240280b40a010f0b001f06071806263e1705444400131e0b221e8074240280b50a010f1f070280b6131e80b72615c02710131e22221e24240a000f2a150a0a0210280280b628131e1a1a00221e1b240a000f281f0818000280b8180828281f00180718001d80b91318080200253144441b020b011800041c4604444406044444051c44441b020b06221e80ba241b020b070a010f1c131b020b080907000d1806221e80bb2418070a010f1c001f170280bc2580bf4418001e251f0618061502331f0718011733444418001806150129191f0818071504291f07180818071503293a2201170a44441c180818073917064444260018081f0715001f08180818063a17804a4418001808131e80bd221e80be2418001808191580ff2f18001808191508351580ff2f18001808191510351580ff2f18001808191518351580ff2f0a040f0d18082d1f0816bfb41800221e80932402000a010f1f081801171344441808221e80bf24150018070a020f001808001f180280c02580814418001e251f0618061502341f07180615032f1500401709444418072d1f071801171c4444131e80c118071501281a011f081808180718060d160e4444131e80c118071a011f0815001f09180918063a172b44441808180915023423191800221e80c22418090a010f180915032f15033333300d18092d1f0916521808001f190280c3250b444418001480c42f001f1a0280c525314444180215053518011502333118011503351802150433312818001801311805180315032f180431191802312831001f1b0280c62518444418001e2515043a170a4444180015041d251800001f1c0280c72580d24418001e251f0618061501291f0718001807191f0915001f0a131e22221e23241506153418062b280a010f1500301f0d180d150039178097441b010b1a180a1b010b806d28041f0a180a15023515032f1f0b15001f0c180c18073a173c44441800180c150128191f081800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061028040d271f09180c2d1f0c164118000b001f08180018071b010b1a18001807191b010b1b26180a180818091807180b18010a061028040d271f09180d2e1f0d16bf671800001f1d0280c82580d34418001e251f0618061501291f0718000b001f08131e22221e23241506153418062b280a010f1f0d1b010b1a180d1b010b806d2a041f0a180a15004017809144180a15023515032f1f0b18071f0c180c150039173c44441800180c150129191f091800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061029040d271f08180c2e1f0c164118001807191f0918001b010b1a18000b001b010b1b26180a180818091500180b18010a061029041d1f271f081b010b1a180a1b010b806d29041f0a16bf6d1800001f1e0280c92581a744131e100280ca02001a02221e132418000a010f170744441800000a001f0618001e251f0715001f0815001f09180818073a178165441800221e80c22418080a010f1f0a180a1580803a17194444180618091800221e80cb2418080a010f0d16812b44180a1588003a172b444418061809131e80bd221e80be241580c0180a15063430158080180a153f2f300a020f0d1680fa44180a15c0d8003a2201170c44441c180a15c0dfff391737444418061809131e80bd221e80be241580e0180a150c3430158080180a150634153f2f30158080180a153f2f300a030f0d1680ae44180815012818073a178098441800221e80c22418081501280a010f1f0b180a15c0dc003a22170c44441c15c0dc00180b3c22170c44441c180b15c0dfff3c17806244180a1583ff2f150a33180b1583ff2f3015c10000281f0c18061809131e80bd221e80be241580f0180c151234153f2f30158080180c150c34153f2f30158080180c150634153f2f30158080180c153f2f300a040f0d18082d1f08160e4444131e80cc0280cd1a014718082d1f0818092d1f0916be991806221e80932402000a010f001f1f0280ce25825c44131e80c118011a011f0615001f0715001f0818001e251f09180718013a22170a44441c180818093a178212441800221e80c2241808222d1f080a010f1f0a180a1504341f0b180b15004017806f44180b15014017806644180b15024017805d44180b15034017805444180b15044017804b44180b15054017804244180b15064017394444180b15074017304444180b150c4017324444180b150d4017294444180b150e4017805c44180b150f401780a94416816b4416817d4418061807180a0d16817244180818093a1729444418061807180a151f2f1506331800221e80c2241808222d1f080a010f153f2f300d160e4444131e80cc0280cf1a014716813644180815012818093a1780404418061807180a150f2f150c331800221e80c2241808222d1f080a010f153f2f150633301800221e80c2241808222d1f080a010f153f2f300d160e4444131e80cc0280cf1a01471680e044180815022818093a1780b044180a15072f1512331800221e80c2241808222d1f080a010f153f2f150c33301800221e80c2241808222d1f080a010f153f2f150633301800221e80c2241808222d1f080a010f153f2f3015c10000291f0c1500180c3c22170c44441c180c15cfffff3c172f444418061807222d1f07180c150a341583ff2f15c0d800300d18061807180c1583ff2f15c0dc00300d161a4444131e80cc0280d0180c221e152415100a010f281a0147160e4444131e80cc0280cf1a0147161a4444131e80cc0280d1180a221e152415100a010f281a014718072d1f0716bde1180718013a170a4444180618071d25131e80bd1e80be131e80bd180610001f200280d22582ad440a001f06131e80c115c080001a011f0715001f0815001f0918001e251f0a180818013a22170a44441c1809180a3a17824a441800221e80c2241809222d1f090a010f1f0b180b1504341f0c180c15004017806f44180c15014017806644180c15024017805d44180c15034017805444180c15044017804b44180c15054017804244180c15064017394444180c15074017304444180c150c4017324444180c150d4017294444180c150e4017805c44180c150f401780a94416816b4416817d4418071808180b0d168172441809180a3a1729444418071808180b151f2f1506331800221e80c2241809222d1f090a010f153f2f300d160e4444131e80cc0280cf1a0147168136441809150128180a3a1780404418071808180b150f2f150c331800221e80c2241809222d1f090a010f153f2f150633301800221e80c2241809222d1f090a010f153f2f300d160e4444131e80cc0280cf1a01471680e0441809150228180a3a1780b044180b15072f1512331800221e80c2241809222d1f090a010f153f2f150c33301800221e80c2241809222d1f090a010f153f2f150633301800221e80c2241809222d1f090a010f153f2f3015c10000291f0d1500180d3c22170c44441c180d15cfffff3c172f444418071808222d1f08180d150a341583ff2f15c0d800300d18071808180d1583ff2f15c0dc00300d161a4444131e80cc0280d0180d221e152415100a010f281a0147160e4444131e80cc0280cf1a0147161a4444131e80cc0280d1180b221e152415100a010f281a0147180815c07ffe3b1731444418081501281f0d1807180d1d25180618061e25131e80bd1e80be131e80bd1807100d1801180d291f01157f1f0818082d1f0816bda91808150039171f4444180718081d25180618061e25131e80bd1e80be131e80bd1807100d1806221e80932402000a010f001f210280d32580ac441801213e2201170944441c1801263e2201170a44441c180115003a170a444418001e251f01180115003e17074444020000131e100280ca02001a02221e132418000a010f2201171944441c131e100280d402001a02221e132418000a010f0117214444180118001e253e170744441800001800221e80d524150018010a020f00180115c0ffff3a171444441b010b2026180018010a0210161044441b010b2126180018010a0210001f220280d6258067441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1800041f001b010b1f1801041f011b010b18261b010b1d261b010b19261800200a02101b010b1c1b010b19261801120a0210040a0210120a0210001f230280d7258063441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1801041f011b010b221b010b18261b010b1e261b010b19261800120a02101b010b1c1b010b19261801120a0210040a0210200a021004001f240280d8258181440280d91f0618011708444418011f0602001f0715001f0918001e2518091503283b1780aa441800221e80c2241809222d1f090a010f1580ff2f1510331800221e80c2241809222d1f090a010f1580ff2f150833301800221e80c2241809222d1f090a010f1580ff2f301f0818071806221e80cb2418081480da2f1512340a010f281f0718071806221e80cb24180815c3f0002f150c340a010f281f0718071806221e80cb241808158fc02f1506340a010f281f0718071806221e80cb241808153f2f0a010f281f0716bf4f18001e251809291500391780a5441800221e80c2241809222d1f090a010f1580ff2f15103318001e25180939171b44441800221e80c22418090a010f1580ff2f150833160644441500301f0818071806221e80cb2418081480da2f1512340a010f281f0718071806221e80cb24180815c3f0002f150c340a010f281f07180718001e25180939171b44441806221e80cb241808158fc02f1506340a010f160744440280db281f0718070280db281f071807001f250280dc251144440280dd221e2a2418000a010f001f260280de2581094402001f0615001f07180718001e251503293a1780f0441b010b261800221e80cb2418071500280a010f041f081b010b261800221e80cb2418071501280a010f041f091b010b261800221e80cb2418071502280a010f041f0a1b010b261800221e80cb2418071503280a010f041f0b1806131e80bd221e80be2418081502331809150435300a010f281f061800221e80cb2418071502280a010f0280db3f172744441806131e80bd221e80be2418091504331580f02f180a150235150f2f300a010f281f061800221e80cb2418071503280a010f0280db3f172144441806131e80bd221e80be24180a1506331580c02f180b300a010f281f0618071504281f0716bf091806001f270280df25804c441800153f2f1f00131e80bd221e80be2418001800151a3a170b444415804116254444180015343a170b4444158047161544441800153e3a170a4444157c16064444156f280a010f001f280280e0253444441b010b281f06180618001518340418061800151234042818061800150c340428180618001506340428180618000428001f290280e1258097441b010b806b1e80e20280e3281f061b010b1726180602002580774418001e2515083a1705444400460444440604444405805e441b010b24261b010b271800221e80952415080a010f041800221e809524150015080a020f0a02101f0618060280e43e171444441b010b2b262018000a02101c161a444418060280e53e171044441b010b2b261218000a02101c07000a02101c001f2a0280e6258050441b010b806b18001d80e7460444440604444405394444131e806d17164444131e806d221e806e240280e818010a020f1c131e80e917164444131e80e9221e806e240280e818010a020f1c07001f2b0280ea2580ab4402001f06460444440604444405804144131e806d17154444131e806d221e80eb240280e80a010f1f061806012201170944441c131e80e917154444131e80e9221e80eb240280e80a010f1f0607180617805644460444440604444405804a441b010b24261b010b271806221e80952415080a010f041806221e809524150015080a020f0a02101f0718070280e43e170a444420001610444418070280e53e1706444412000712001f2c0280ec2580fa44121f061b010b806b1e80e7203e170b4444201f06162344441b010b806b1e80e7123e170b4444121f06160e44441b010b2c260a00101f06131e081a0022121d80ed22121d2e2218061d80ee22121d80ef22121d3522121d80f022121d80f122121d804c22121d806822121d80f2220280f32506444420001f0818081d131f0718071b010b0c260a00101d80ef18071e80ef01178061441b010b0d1807041c1b010b111807041c18071b010b0e260a00101d80f018071b010b0f260a00101d80f118071b010b10260a00101d804c18071b010b12260a00101d80f218071b010b13260a00101d2e18071b010b16260a00101d80ed1807001f2d0280f425805b44131e08221e80f52418000a010f1f0615001f0718061e251501291f08180815003b173344441800180618081919170a444415011606444415001f09180918061e25180829150129331807301f0718082e1f08164a1807001f2e0280f62536444415001f06180618011e253a17244444180015c1003f2a1801221e80c22418060a010f281500351f0018062d1f0616571800001f2f0280f72536444415001f06180618011e253a1724444418001801221e80c22418060a010f3115c1003f2a1500351f0018062d1f0616571800001f300280f82580704418002201170744441c02001f061806221e807724131e100280f902001a0202000a020f1f061806221e2a240280e30a010f157f40172044441806221e80d52415001806221e2a240280e30a010f0a020f1606444418061f061806170a444418061607444402808a1f061806001f310280fa2580aa4418002201170744441c02001f061806221e806224131e100280fb02001a020a010f1f0718071716444418070b00221e80d52415010a010f1606444402001f061806171544441806221e80fc240280fd0a010f16054444261f08131e081a001f0918081780414415001f0a180a18081e253a1732444418091808180a19221e80fc240280db0a010f0b001808180a19221e80fc240280db0a010f0b010d180a2d1f0a16491809001f320280fe25808e441800012201171744441c131e80ff221e81002418000a010f0281013e170a4444131e081a0000131e08221e80f52418000a010f221e8102240a000f1f06131e081a001f0715001f08180818061e253a173844441801171b44441807180618081918001806180819190200280d161444441807180618081918001806180819190d18082d1f0816431807001f3302810325807344131e80c1221e81042418000a010f171344441800221e8105241b010b340a010f001800131e084117804544131e08221e80f52418000a010f221e8102240a000f1f061806221e810624020025184444180018011b010b341b020b00180119040d180000131e081a000a020f001800001f34028107258078441800012201171744441c131e80ff221e81002418000a010f0281013e17074444020000131e08221e80f52418000a010f221e8102240a000f1f0602001f0715001f08180818061e253a17284444180718061808190a010280db281800180618081919280280fd28281f0718082d1f0816531807001f350281082580c244131e0b221e8074240280750a010f1f07180715301d8109180715101d810a1807221e80832402810b0a010f1f08180802810c1d810d1808221e810e2402810f1502150c0a030f1c180815021d8110180815011d811118080281121d81131808221e811424150815081508150015020a050f1c1808221e8115240a000f1c1807221e8076240a000f1f0615001f09180915203a17294444180015c1003f2a1806221e80c224180018061e252c0a010f281500351f0018092d1f0916541800001f360281162521444446044444060a4444271f06157f00050e44441b010b36148117040007001f3702811825124444110281181d80901118001d8119001f3802811a251e44444604444406094444271f062000050c4444131e806d01010007001f3902811b251e44444604444406094444271f062000050c4444131e80e901010007001f3a02811c251e44444604444406094444271f062000050c4444131e806601010007001f3b02811d252e44441b010b0a1b010b3b260a0010041b010b0a1b010b3a260a001004281b010b0a1b010b39260a00100428001f3c02811e25244444131e811f1f0618061e81090280b62818061e810a280280b62818061e812028001f3d028121251a4444131e811f1f0618061e81220280b62818061e812328001f3e02812425806b44131e8125020025805e44028126131e2c4217804c44131e2c221e8126240a000f221e8127240200252e44441b030b0018001e81280280b62818001e8129280280b62818001e812a280280b62818001e812b28041c000a010f1c160a444418000200041c001a01001f3f02812c25807c4402812d1f0615001f0721131e2c1806194302044017104444131e2c1806191f07161b444421131e2c18061943020440170c4444131e2c1806191f0746044444060a4444271f09121f0805174444131e0b221e812e2402812f0a010f1c201f080702813013421f0918070280b6281808280280b628180928001f804002813125806044131e1a1a001f061806221e81322415010a010f1c1806221e81332415050a010f1c15001806221e8134240a000f291f071806221e813324150b0a010f1c15001806221e8134240a000f291f08131e22221e813524180718080a020f001f80410281362581c3440281370281380281390a031f06131e081a001f07131e081a001f081806031f091809210417806c441f0a131e0b221e80742402813a0a010f1f0b180b02813b1d813c180b1e813d02813e1d813f180b1e813d180a1d8140131e0b1e80b2221e80bb24180b0a010f1c1807180a180b1e81410d1808180a180b1e81420d131e0b1e80b2221e80ba24180b0a010f1c16bf9302814302814402814502814602814702814802814902814a02814b02814c02814d02814e02814f02815002815102815202815302815402815502815602815702815802815902815a02815b02815c02815d02815e02815f0a1d1f0915001f0b271f0a271f0c15001f0d180d18091e253a1780b3441806031f0e180e210417809e441f0f131e0b221e80742402813a0a010f1f10181002813b1d813c18101e813d02813e1d813f18101e813d1809180d1902816028180f281d8140131e0b1e80b2221e80bb2418100a010f1c18101e81411807180f19402201171044441c18101e81421808180f19401f11131e0b1e80b2221e80ba2418100a010f1c1811171b4444180d151e3a170e44441501180d33180a301f0a1607444416bf61180d2d1f0d16bf49180a221e152415100a010f001f804202816125809b442118014302816240170544440018000280db281f061801221e80fc24131e1002816302001a020a010f1f0715001f09180918071e253a1780604418071809191f081808221e80cb2415000a010f0281643e171844441808221e80bf24150118081e250a020f1f08165a1808221e2a2418060a010f15003e171744441808221e80bf2418061e2518081e250a020f0018092d1f0916bf9c001f80430281652580744446044444060a4444271f060200000580614402001f06131e806d171d4444131e806d221e80eb2418000a010f1f06180617074444180600131e80e9171d4444131e80e9221e80eb2418000a010f1f061806170744441806001b010b8043261800131e0b1e81660a02101f0618060007001f804402816725808944460444440604444405807c44131e806d17154444131e806d221e806e24180018010a020f1c131e80e917154444131e80e9221e806e24180018010a020f1c1481681f06131e0b1800028169281d8166131e0b18000280db2818012802816a28131e1a131e1a1a00221e1b240a000f1806281a01221e816b240a000f2802816c281d816607001f804502816d2525444446044444060d4444271f0618061e811900050f4444131e816e02816f1a011c07001f804602817025124444131e8171221e15240a000f1e25001f80470281722581bb441b010b06260a00102201170d44441c1b010b08260a001017074444020000131e81732201170944441c131e81742201170944441c131e81751f06131e812502002581744446044444060d4444271f0618000200041c05815e441b020b0617814f441b020b06131e081a0022131e081a00220281761d81770a011d81781a011f06020025054444001f07131e1002817902001a021f08131e1002817a0280791a021f091806221e817b2402000a010f1c131e817c260200250d44441b030b000200041c001581f40a02101c1806221e817d240a000f1f0a180a131e81254117374444180a221e8127240200251344441b030b06221e817e2418000a010f000a010f221e812724020025054444000a010f1c162f44441806221e817d240200251c44441b030b06221e817e2418001b030b071b030b070a030f1c0018070a020f1c1806020025806244180022170a44441c18001e817f22170d44441c18001e817f1e817f178042441b030b08221e81802418001e817f1e817f0a010f1f0618061726444418060b00221e8062241b030b090a010f1f071807170e44441b030b0018060b00041c001d8181160a444418000200041c07001a01001f804802818225805944028183221e807724131e100281840280791a020200253c4444131e22221e24240a000f15102a1500301f0618000281853d170a44441806160c4444180615032f1508301f071807221e152415100a010f000a020f001f80490281862580504418001e2515223e178043441b010b2f2615001800221e80bf24150015200a020f0a02101f061806221e15240a000f221e80bf24150015020a020f1800221e80bf24152015220a020f3e0012001f804a028187258060441b010b8044028188041f06180622170d44441c1b010b804a180604170744441806001b010b8049260a00101f0618061b010b2f26150018060a021028221e80bf24150015220a020f1f061b010b80452602818818060a02101c1806001f804b02818925324444180001170744440200001b010b0b1504041f0618061b010b25261b010b2326180018060a021002818a0a021028001f804c02818b258155441801173b444415001f0615001f07180718001e253a1728444418001807191e818c17154444180018071918011806222d1f06191d818d18072d1f07165302001f061800221e818e240200251c44441b02220b061b010b0a18001e818d0402818f28281d8190000a010f1c18061b010b09260a0010281f061b010b8049260a00101f07131e22221e23241807221e80c22415030a010f15082b0a010f1807221e80c22415030a010f15082c281f081807221e80bf24150415041808280a020f1f091b010b251b010b2326180618090a0210180728041f061b010b806b221e8191028192131e8193180604280280fd28281d8191271f0a1b010b1726180a020025804e4418001e819415003d22170a44441c18001e8195173644441b010b806b1b010b804c18001e8195041d81961b010b806b18001e81951d81971b010b80452602819818001e81950a02101c000a02101c001f804d02819925848644131e2c22170644441c1322170844441c131e0b011705444400131e081a002202819a1d819b2215041d819c2218001e819a1d818d131e081a002202819d1d819b2215031d819c221b010b091d819e131e081a002202819f1d819b2215031d819c221b010b3c1d819e131e081a00220280751d819b2215031d819c221b010b371d819e131e081a00220281a01d819b2215031d819c221b010b091d819e131e081a00220280991d819b2215001d819c131e081a00220281a11d819b2215001d819c131e081a00220281a21d819b2215001d819c131e081a00220281a31d819b2215001d819c131e081a002202804e1d819b2215001d819c131e081a00220281a41d819b2215031d819c221b010b3d1d819e131e081a00220281a51d819b2215031d819c221b010b3e1d819e131e081a00220281a61d819b2215011d819c131e081a00220281a71d819b2215011d819c131e081a00220281a81d819b2215011d819c131e081a00220281a91d819b2215001d819c131e081a00220281aa1d819b2215031d819c221b010b3f1d819e2215011d818c131e081a00220281ab1d819b2215031d819c221b010b80401d819e131e081a00220281ac1d819b2215031d819c221b010b80411d819e131e081a00220281ad1d819b2215031d819c221b010b091d819e131e081a00220281ae1d819b2215031d819c221b010b141d819e131e081a00220281af1d819b2215031d819c221b010b80421d819e131e081a00220281b01d819b2215031d819c221b010b151d819e131e081a00220281b11d819b2215031d819c221b010b091d819e131e081a00220280971d819b2215001d819c131e081a00220281b21d819b2215031d819c221b010b80441d819e220281981d81b3131e081a00220281b41d819b2215031d819c221b010b80461d819e131e081a00220281b51d819b2215031d819c221b010b80471d819e131e081a00220281b61d819b2215031d819c221b010b80481d819e2215011d818c131e081a0022022e1d819b2215011d819c131e081a00220281b71d819b2215041d819c221b010b806a1e81b81d818d131e081a00220281b91d819b2215031d819c221b010b804b1d819e131e081a00220281ba1d819b2215031d819c221b010b091d819e131e081a00220281bb1d819b2215041d819c0a221f060a001f07180608031f08180821041780e0441f0918061809191e819c1f0a180a15004017234444180a15014017374444180a15024017804444180a150340178053441680a94418061809191b010b0a131e2c18061809191e819b19041d818d16808c4418061809191318061809191e819b191d818d168076441806180919131e0b18061809191e819b191d818d16805e4418061809191e818c17324444131e8125172644441807221e808e2418061809191e819e221e292418061809191e81b30a010f0a010f1c16244444180618091918061809191e819e221e29242618061809191e81b30a020f1d818d16bf1f131e812517364444131e8125221e81bc2418070a010f221e8127240200251544441b010b804d261b020b0618000a02101c000a010f1c160d44441b010b804d1806041c001f804e0281bd25837a442118014302043e22170c44441c2118004302024022170b44441c18001e81be01170e44441b010b380281bf1a014715001f0615001f0715c0fff11f08131e1a1a00221e1b240a000f1583e82b1500351f091b010b806a1e81c00122173844441c1b010b30261b010b3026150018090200280a0210131e2e1e807e221e80bf24131e2e1e81c11e251502280a010f0a021018082c1f071809180718082a31150035221e152415020a010f1f0a180a1f0b180a1e25152039171b4444180a221e80bf24180a1e251520290a010f1f0b163a4444180a1e2515203a172f444402001f0c15001f0d180d1520180a1e25293a17124444180c021f281f0c180d2d1f0d1666180c180b281f0b0281c21f0c0281c31f0d0281c31f0e0281c41f0f180f180e28180d28180c28180b281f06131e80b726180615020a02101f061b010b3026150018060200280a02101f101b010b2d260a00101f1102001f121801170c444418011f1216811b441b010b80731e81c5221e2924110281c618000a030f1c18001e80b222171a44441c131e80ff221e81002418001e80b20a010f0281014017806d4415001f1318001e81c7173244441b010b2f261500131e80ff221e8100241b010b332618001e80b218001e81c70a02100a010f0a02101f13162644441b010b2f261500131e80ff221e8100241b010b3418001e80b2040a010f0a02101f130281c81813280280fd281f121b010b3218001e81be041f1318001e81c9171a4444131e08221e81ca24181318001e81c90a020f1606444418131f1318121b010b35181304281f1218120281cb281b010b3118001e81be04280280fd281f1218120281cc280281cd281f121b010b80731e81c5221e2924110281ce18120a030f1c1b010b2e1811041f131b010b806a1e81c00122170d44441c1b010b37260a00101f141b010b806a1e81c00122172344441c1b010b806b1e81962201171444441c1b010b804c1b010b804402819804041f151b010b806f1806041b010b806f18061481cf2b15003504281b010b806f181418063104281b010b806f1b010b302618101b010b806a1e81c00122170b44441c131e2c1e8097221e15240a000f0a021018082c1510331b010b3026181018120200280a021018082c3004281b010b806f18131508331b010b806a1e81d01504333018063104281b010b29180704281f161b010b806f1500041c1815170b444418161815281f161816001f804f0281d125804844131e81d21a001f061806221e8067240281d31801200a030f1c1806221e81d4240281d50281d60a020f1c1806221e81d724131e80ff221e81002418000a010f0a010f1c001f80500281d825807244131e0b22170b44441c131e0b1e81d90117054444001b01131e1a221e81da240a000f1d81db1b010b807e08031f0618062104171e44441f07131e0b221e81d92418071b010b807e1807190a020f1c1660131e817c260200250d44441b010b805620041c001b010b80790a02101c001f80510281dc2580644415001f0618001e81dd2201170a44441c18001e81de2201170a44441c18001e81df2201170a44441c18001e81e01708444415011f061b010b8054131e081a002218001e808f1d819e2218061d818522131e1a221e81da240a000f1d81e1041c001f80520281e22580a74418001f0618001e808f1f0718001e81e317804e4418070281e43e2201170b44441c18070281e53e1718444418001e81e60b001f0618061e81e71f081623444418070281e83e1718444418001e81e30b001f0618061e81e71f081605444400131e081a002218071d819e2218061e81e91d81852218061e81ea1d81eb22131e1a221e81da240a000f1d81e11f091808170b4444180918081d819c1b010b80541809041c001f80530281ec258078441b010b8056260a0010170544440018001f0618061e81e11f071b010b807a15003f17144444180618061e81e11b010b807a291d81e118061b010b805518061e819e041d819e1b0118071d81ed18001e81ee123e171044441b01220b807d1501281d81ef1b010b807b221e808e2418060a010f1c001f80540281f025804144131e081a002215001d81f12215011d81f22215021d81f32215031d81f42215041d81f52215051d81e42215061d81e82215071d81e51f061806180019001f80550281f6258070441b010b807b1e251b010b80773b171044441b010b8058260a00101c200018002201171c44441c131e1a221e81da240a000f1b010b807c291b010b80793b172d44441b010b807b1e251b010b80783b171044441b010b8058260a00101c20001b010b8059260a00101c200012001f80560281f72580bd441b010b807b1e2515003d1705444400131e081a00221b010b806b1e81971d81e122131e2c1e80971d81f822131e2e1e807e1d818d22131e081a00221b010b807b1d81f9221b010b807d1d121d819e1f061b010b0b1508041f07131e081a002218061d81fa1f08131e081a002218071b010b25261b010b23261b010b8076221e81fb24131e80ff221e81002418060a010f0a010f18070a02100280dd0a0210281d81fa1f081b010b80502618081b010b806b1e81fc0a02101c001f80570281fd252044441b010b8059260a00101c1b010b8057260a00101c1b010a001d81fe001f80580281ff253044441b010b807e08031f0618062104171e44441f07131e0b221e82002418071b010b807e1807190a020f1c1660001f8059028201253c444415001f0618061b010b806b1e82021e253a172544441b010b806b1e8202180619221e132418000a010f17064444200018062d1f06165012001f805a02820325834d44131e81d21e281f0618061e80671f0718061e81d41f0818061e81d71f0918061e82041f0a18061e82051709444400160a44441806201d82051806020025805644111e8206221e808e24131e081a00220281d41d8207221b031d82080a010f1c131e1002820902121a02221e132418000a010f17174444111801221e80fc2402820a0a010f0b001d820b1b020b08111b0310001d81d41806020025134444111b031d820c1b020b0a111b0310001d820418060200253e4444110a001d8206111e8206221e808e24131e081a00220280671d8207221b031d82080a010f1c1118001d820d1118011d820e1b020b07111b0310001d806702820f0280690282100282110282120282130282140a071f0b18060200258234441b010b805a111e820e0417821d44111e820e221e2a240282150a010f157f39170d44441b020b09111b0310001118001d8216111e82171f06111e820f1f07111e80691f08111e82101f09111e82111f0a111e82121f0b111e82131f0c111e82141f0d111e82181f0e111e82191f0f131e081a001f1015001f1118111b020b0b1e253a1721444418101b020b0b181119111e821a1b020b0b181119190d18112d1f111658131e081a00221b010b8061261b020b00111e820e0a02101d81be1f11111e820d0281d33d17804044111e820b02821b3e2201170d44441c111e820b0281d63e171c44441b010b805f261811111e820b111e82160a03101c160d44441b020b09111b0310001b010b80641b020b0004171644441b020b00221e821c2418110a010f160c44441b010b804f1811041f121b010b806226111e820e18120a02101f13111e820622171244441c111e82060b001e82070280673f170644442600111e82061f1415001f15181518141e253a17354444181515003e1710444418141815191e820818131d1e1118141815191e8207191118141815191e8208101c18152d1f151646111e820c170f4444111e820411111e820c101c11028206091118061d82171118071d820f1118081d80691118091d821011180a1d821111180b1d821211180c1d821311180d1d821411180e1d821811180f1d821915001f1518151b020b0b1e253a17214444111e821a1b020b0b18151918101b020b0b181519190d18152d1f1516581b020b09111b0310001d81d7001f805b02821d2582e44402821e2582ad4418012201170a44441c131e081a001f011b010b807f22170c44441c1800131e821f411f0602001f070282201f0818061716444418001e81be1f0718001e82211f081626444418001f0718011e82211715444418011e8221221e8222240a000f1606444418081f0818080282204022170b44441c18080281d3402201170e44441c1b010b805a18070401171144441b020b0726180018010a021000131e081a00221b010b8061261b020b0018070a02101d81be1f0918080281d33d178166441b010b805e26180018010a0210221e80fc2402820a0a010f0b00221e8098240a000f1f0a180a02821b3e2201170b44441c180a0281d63e17811a4418061780b7441800221e8223240a000f221e8224240a000f221e8127240200258079441b010b805f261b030b091b030b0a18000a03101c1b010b80641b020b0004171844441b020b00221e821c241b030b090a010f160e44441b010b804f1b030b09041f061b010b8062261b030b0718060a02101f071b010b8060261b030b00180718000a03101f081b020b072618081b030b010a021000020025174444131e81250200250a44441b040b0047001a01000a020f0016805d441b010b805f261809180a18011e80b20a03101c1b010b80641b020b0004171644441b020b00221e821c2418090a010f160c44441b010b804f1809041f0b1b010b8062261807180b0a02101f0c1b020b0726180c18010a021000161144441b020b0726180018010a02100016808c4418080282203e178075441b010b80641b020b0004171644441b020b00221e821c2418090a010f160c44441b010b804f1809041f0a1b010b8062261807180a0a02101f0b1806172544441b010b8060261800180b210a03101f0c1b020b0726180c18010a021000161144441b020b0726180b18010a021000161144441b020b0726180018010a021000001f061b010b805d260a0010011705444400131e822517094444001609444413201d8225131e82261f071318061d8226001f805c02822725094444131e8226001f805d0282282581114402001f061b010b807f22170c44441c1800131e821f411722444418001e8229221e362402822a0a010f1f0718071708444418071f06180600180122170a44441c18011e82291780c7441b010b808022170f44441c18011e822b131e822c411722444418011e8229221e362402822a0a010f1f0718071708444418071f0618060018011e8229131e80c1411780424415001f07180718011e82291e253a1730444418011e82291807190b00221e8098240a000f02822a3d170f444418011e82291807190b010018072d1f07164818011e8229131e08411737444418011e822908031f0718072104172344441f081808221e8098240a000f02822a3e170d444418011e822918081900165b180600001f805e02822d25809e441802221e15240a000f1f02180102821b3e178073441800201d81c71802221e80fc240280fd0a010f1f06131e081a001f0718061780464415001f08180818061e253a1737444418071806180819221e80fc240280db0a010f0b00131e822e1806180819221e80fc240280db0a010f0b01040d18082d1f081644180018071d80b2161744441800131e80ff221e822f2418020a010f1d80b21800001f805f02823025806944131e821f1801131e081a002218001e82211d82212218001e82291d82292218021d80b22218001e82311d82312218001e82321d82322218001e82331d82332218001e82341d82342218001e82351d82352218001e82361d82362218001e82371d82371a02001f80600282382580af4418011f061b010b806b1e82391e251500391780804415001f0718071b010b806b1e82391e253a17806b441b010b806b1e82391807190b001f081808221e132418010a010f178045441801221e80772418081b010b806b1e82391807190b010a020f1f061b010b80731e81c5221e2924180002823a02823b18012802823c281806280a030f1c160c444418072d1f0716bf8b131e822e18060418063d170d4444131e823d1806041f061806001f806102823e252b444418001800221e2a240280e30a010f157f40170e444402823f180128160a444402824018012828001f8062028241251744441b010b805b1800041c1b010b805c1800041c001f8063028242250d444418001b010b806541001f8064028243251a444411131e80ff221e822f241b010b80810a010f1d8244001f80650282452580cc441b010b806a1e81c01706444426001b010b80641104170c4444111e8244160944441b010b806b1f06131e08221e81ca24180618000a020f1c1b010b80671806041c18061e8241172444441b010b806818061e8246041c1b010b806918061e8247041c1b010b806311041c1b010b806b1e82480122170a44441c18061e8199178049441b010b806b201d824818061e8249124022170b44441c18061e824a01170e44441b010b8051260a00101c1b010b2a260a00101c131e817c261b010b804e150018060a03101c001f806602824b2580684418001e819a15003e2201171a44441c131e22221e232418001e819a0a010f18001e819a3f170e44441b010b3802824c1a014718001e8241172c444418001e82461e2515003e2201170e44441c18001e82461e808e01170e44441b010b3802824d1a0147001f806702824e2536444415001f06180618001e253a172644441b010b806b1e8202221e808e24131e1018001806191a010a010f1c18062d1f061655001f806802824f2580414415001f06180618001e253a173144441b010b806b1e8239221e808e24131e1018001806190b001a0118001806190b010a020a010f1c18062d1f06164a001f806921131e081e81ca430206401780c044131e08221e3324131e080281ca131e081a00220281ca25808f441800263e2201170944441c1800213e170e4444131e82500282511a0147131e081800041f0615011f0718071b021e253a178058441b021807191f081808264022170944441c1808214017374444180808031f0918092104172944441f0a131e081e281e8252221e29241808180a0a020f170e44441806180a1808180a190d165518072d1f0716bfa41806001f806a18806a1d805222201d805322201d82530a030f1c131e081e80f50117810644131e0802002580f644131e081e281e82521f06131e081a0022261d15221e82542402150a010f011f07021502825502825602825202825702825402110a071f0818081e251f0902002580b2442118004302064022171744441c211800430202402201170944441c1800263e170e4444131e82500282581a01470a001f06180008031f0918092104172844441f071b020b06221e2924180018070a020f171144441806221e808e2418070a010f1c16561b020b071780444415001f0818081b020b093a173544441b020b06221e292418001b020b081808190a020f171644441806221e808e241b020b081808190a010f1c18082d1f08164618060000260a00101d80f5131e081a00220282591d81b82215011d81d022121d81c01f806a131e081a0022121d825a2215001d819a22121d819922121d8241220a001d8246220a001d8202220a001d8247220a001d82392202825b1d81912202825c1d80e22202825d1d81fc1f806b131e081a001f806c14825e1f806d15001f806e0200252044441b011b010b80711d825f1b0118001d82601b010b29180015023404001f8070271f806f0200252d44441b011b010b80721d825f1b010b806e151c331800150435301f061b0118001d82601b010b29180604001f80710200252a44441b011b010b80701d825f1b010b291b010b806e151a33180015063530041b010b2818000428001f8072131e081a0022020025804c44121f061b010b8064110417114444111e82441e825a1f06160e44441b010b806b1e825a1f06180622171e44441c131e37221e38240282611800280282622802826318010a030f1c001d81c51f8073131e80bd1e80be1f80740282641f8075131e081a00220200258086441800263d170744440200001b010b8076221e826524180015060200251444441b010b8075221e80cb2418000a010f000a030f1f0618061e2515042c1f07162c44441807150040172344441807150140171d44441807150240171b4444180715034017194444161c4444180600180602826628001806028267280018060280db2800001d81fb220200252544441b010b8076221e826524180015100200250d44441b010b8074180004000a030f001d82682202002585f1441800263d17074444020000131e081a001f08131e081a001f0902001f0a02001f0b02001f0c15021f0d15031f0e15021f0f0a001f1015001f1115001f1215001f13181318001e253a1782c1441800221e80cb2418130a010f1f0a131e081e281e8252221e29241808180a0a020f01171544441808180a180e222d1f0e0d1809180a200d180c180a281f0b131e081e281e8252221e29241808180b0a020f170c4444180b1f0c16825a44131e081e281e8252221e29241809180c0a020f1781ae44180c221e80c22415000a010f1581003a1780b54415001f061806180f3a1780404418111501331f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218062d1f0616bfbe180c221e80c22415000a010f1f0715001f06180615083a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb11680bc4415011f0715001f061806180f3a1780474418111501331807301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1215001f0718062d1f0616bfb7180c221e80c22415000a010f1f0715001f06180615103a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb1180d2e1f0d180d15003d171a4444131e22221e8269241502180f0a020f1f0d180f2d1f0f1809180c09168061441808180c191f0715001f061806180f3a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb1180d2e1f0d180d15003d171a4444131e22221e8269241502180f0a020f1f0d180f2d1f0f1808180b180e222d1f0e0d131e80bd180a041f0c18131501281f1316bd3b180c02004017824644131e081e281e8252221e29241809180c0a020f1781ae44180c221e80c22415000a010f1581003a1780b54415001f061806180f3a1780404418111501331f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218062d1f0616bfbe180c221e80c22415000a010f1f0715001f06180615083a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb11680bc4415011f0715001f061806180f3a1780474418111501331807301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1215001f0718062d1f0616bfb7180c221e80c22415000a010f1f0715001f06180615103a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb1180d2e1f0d180d15003d171a4444131e22221e8269241502180f0a020f1f0d180f2d1f0f1809180c09168061441808180c191f0715001f061806180f3a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb1180d2e1f0d180d15003d171a4444131e22221e8269241502180f0a020f1f0d180f2d1f0f15021f0715001f061806180f3a17804d441811150133180715012f301f11181218011501293d1720444415001f121810221e808e2418021811040a010f1c15001f111609444418122d1f1218071501341f0718062d1f0616bfb118111501331f11181218011501293d171c44441810221e808e2418021811040a010f1c160f44441609444418122d1f1216501810221e80932402000a010f001d82651f807615812c1f807715141f807815c927c01f807915001f807a0a001f807b15001f807c15001f807d131e081a00221880531d81f1221880531d81f2221880531d81f3221880521d81f4221880521d81f5221880531d81e4221880531d81e8221880531d81e51f807e131e821f22170d44441c131e821f131e08411f807f131e822c22170d44441c131e822c131e08411f8080131e80ff221e81002418806b0a010f1f808118804f1f80821880651e281880661d82451880651e281880821d821c18806a1222170b44441c180c260a00101d81c018001880651d824318001880661d824518001880821d821c131e08221e3324180002826a131e081a0022201d80520a030f1c000a02101c00826b000734b47169664ce0063eaf6e6a4806063ca16c6f24d90924a16f473b980a607c0635b56944175d0837a47c55e51c5feb0330bf72061eb1732ca1860e33ad6931bb64c3c6dfa38fec30980438a669180835b9471d7e5ac0b10c35b84405451058eed8e608400938ab6d1236d98f358e0e18b75df03d95ee0e85e93f921b240838a961ee1e21c7b30603be52d2f5050b32b357d1decd81193ebc5801380425bb33c20b198b0ef2b61423a7703f9c08258f14bd7d56d68f210a8e28b8421f26ca34411658c2b215b350d07150e0b1236f5bae42e20d0849faf506228328bc31aa102196228d1696f8143e94f9c5ca6949e80c368121a41c2fa1794ed28f290415842c9c073683285040eb150836822b5a5fd08dea0733870c7b3f6244016001610c238a0357ccd1afe9c28832763e61dd430df4330098e66c9ecbb059a247e411084cffc4b63573f00a1d217f2f57e4c984c65acbde9414523accde8d0bbce4b6f0619e0969bdcab1cbbacb91041c8c002f053782173d8606238e153e6652063d95110251ee09359eef2a58b7763f600f0a9de4133c6932fd00602987054a90092181e6f50134b742c8043295e1e007389bf4f0da8b7c081599f7d5d2683f88093f96e1c1b322ad3e8c120a97f9d995e9f8b2ecaa44dc9ad38cc7932d083d96fddd7c2e8a1f073993d1b34bfce1100a94c7a55ca0695f3d3451e4cba52e450e3599cbaf316a32632754c1655ea2051890cd84080e359bd687e4f4f3a32a98e4f20b0402389b08356555b47c1a16290336644e07326d50a6206d5a033d6c2602746707376c3a94face740a3e733899c7532299cf7f0a3869216138adda663d930b3e7d276a140980e9e2fac00b3867387d0c361aebeccaa90a3f653e46dea045a544dd0636673249ce9607217e0e55a93782100a620655861df7b0c27a0f5e83fdc04d0d216609247427908655b052b41c0721631e357c13f10b017c1a3a58aa74a22743dd080e611a072775217d0b32731a1d3520603e63e6ca0b0e4c17101d16fdc88dedba05106119edf8181274eefbcf710740c062063e7de7c94f17e9d96806eed3d70f2673e6fcb9227a15191b278faf3257092672e5c492e8e2a03213367dffe48ba617770e386e010cffe46404012a093d78e0d361e4c780e1063272e0d05da907236efbb32c6c3d073273f7bc07286605277cf0ae1c08266cc992f7ad3220140e40d48bc960163c46b00023f3ae1ff29adb4395130e7fd49cab2e78fab9311a6909fe9cc95a8db01b0e7edd673d2c62ecdc6d06dcda6a08ffadfb920f05edd058b5fa8a170e7dd96819ebb02a700a04d6ca5190f29ac57ca73842b8150e7cc670f2a13871ea82d1a5a61ae6b0f6cc6994a7130e7bd358c97cebd398a8dbcb6ec390abf5a8f4120e7adc5bad3f73ea81fba9214f9e95d5631e150e79cb5183f6bc0c29345d84ffaf3c57a62d252770110e78db4e9fbe3348aaac2a2c44b80b00eb140e77b0227eeaa631346524ee82cf4594a108fe97140e76a0284ebe0b2c226afb761ff2ca588c95c97b090e59af37237dfdadee0c324aa10f082d76cd62eece53160e7fb4021dfcbd0ff7b4ff77a9e31779d45474e7d93e053c4ca014e70a0d0a83e3816cfd9ebfcd06324eb8e2a4140f385ebcfabafcb1fcae14528dbafc7409385f86fb8daa15c3fd043e4283c709385d8ade41a20509c7073e5a88ce317ad104325a94a00c1579b9950ffa8ab71007e7a4120062b88ccd9032c4b9a3f07f4ed0b38c20c80e225d8890c179c44ec9214868e8ba07225c8aa5b4362e1022556f12d79f9ffd5e79f1aeb006ff9b0a235e6810c74aa2b6380c0c015360e4ba1cd751dd40b9e10e1c6e5cfc8cdd43670dfd3e54969f0a39517ff54618c5519e800d324d76c763d77268e3a119db3006322179c7528a09252e5edb3f5756d6840723276ea9061ed0030d300b01360a3f245c88c6526af89f93140a294e86a8e3b5442dd02e0ee4868cf896a705990e3d284c9596df265756d7374b9888804a0f20478b8e8ec4cdb2f6f90bcb9a5db12ae01ca0d736e209bbf9eb604cb5a4718749a85ed175f5ee6883a2a268fd866edb86163defa8ef9f0ae1da473bf8f69ce47a56c5662cb4fec6b004393b536e043723567610393f496bfd59825b7ed0282d466ffd86063629356194b507161d1166b5bcb60a362b3c7977aa07cc497205262a2925410c36353b0831344e99859c9c8119061410112d22a012d52d0bc06d85aa1bb6d45250b0999a99740c363722311cb616da3d18fa6d15041d1428c1b1ba48f1127967be49f76c4097e57b7e17041a1035fc08735395d9aba992e8150c1d00dfb5b745e8017e0a363310d88fb2e5bec23106011b32d7b1b304382c0ef604212c1dcc04252302ca043f3a18d20727390bb113a8e608373410aeff60f77f043b31e9b802727c05220cee8aba0c320ee4819e77d27f5c449195092411eb8f52acfd74940b250cdd6adf24327c5c4a55082108f464a3e58a6107260cf67db3b2ff03260ff2073009fb5e61ade8053d01cd4252063819ce2f2c2d04381acb2f04381bc237033c0dd204321fdb1403295f8905321dd215aa053708d6ea86093c10a1e763bfc83d190c3c13a5c6597dadaac602ad9c04211aa2c408371dbfc93dfe61c1063e05b5c713e3057119a4b2a007321fa5a7c92e4208250ab2b7a5fc542b041c2a979906271f8c839b640616148a8865ae053b0f869456043312887a14361b844bb6bcbab6a4c1f242c6c9281fa1786ea804391a92720622e385487ba1010e0821e38c465a10f5350932e26dd1f64e5055660322f6660b23e065bebed63c965437c30b30f67cb98b9874231793260e25e84d8d94534d19e7f36569a6da0602fc6186789e0c37fb79956d5e2af245b9bb930922ff7870becff420ed0d25e44862b186102c528a4433e00510fe5377850a32e5456d50994b5b24b30538e05c19020a65bd12067c43d92c2e33023ce80437f84a2d1234fc5523ec30198b932f07c21f050d61679e1235f65a2bd306816626f83dba187f0383532f0a24e05b5c82d1cf1168950e0fce1c15eeca6c2f891a222239220632fe250aba370514e535ef62101cf927ed43321e965078c0e320ce12751524ed28ac00186f9c513ee8c4e75d25f40b6e4f2ee51f04f434f60eadccdbf32bbe3083b36cb83f4232d8f43a88f925f948e75e07822912f334d5149a30e4683a746b534d106965c1627474485c53529432ad8026f67ea9754a2ad18d9fe4721513fd3d92c717383e30ce4b21c11c9a32aaabc126641424e93a83ed18736eb86492679c5b257c8423f30a0a24ea06fe82a2a9bc8e400e0fc43fb6ebcc7dff0b9a32ecb0460622d505aa83310529d91e876e0735c70d9f5237fa0e33c20290764945627674475b076d804015cf1170ba6eda692ba1a17e43290a09f52fbed1141bdf56a07d8deb825f514c0cd984f59c646152018a61275b0358ca0d4148196132f14c4d128434ba28bef50860934d38c171b514016c1033c60c791074dd4b20f816a8744e36c2804010eac06307c1732ead6a7c3d4ebf0ac838a602ee97815b4a7b11d3d7deb66d764232895a125c1659e1197c5a1e6e39bc71652e9367da6ccca6b6683418530f591433c8f5556cf09d9c4b3ed4c00e457aed21fb06830933cbf95e403f5f854e06339db91cb8700836c9e51ec9f821e50821cce636d291a09a016e023ec1033ed6f90922d4d62d522ee9167a0e0ec2c7fb20e303c1dfc3d9ab957b0f0ed1d0e533a0877b6a7e7176680d460c3ddbcefd1f5e7b7a572fd1de1236d0c4f6fd21d0e825f5c1dbd580be4531bc0736d3c0f9d3f4360f35d2c3dddfb3a24432b07f2ef4e44f0a32d7d5b0b17d624e0e920622ced7b893230335d5af043fd4a1ba0721d4a8844afe0c0439d2a3980b25dba38a34704c1e7174690e30cca0636a687f4f379c1f784c25043aa5ae620b22a5b87764fd2b8b25dcdd0422a6bc480736a6957d0d7f712279ac914cf96e8d25466cd6c5c1be707b270ef7745e542f00da4e2c1f3e4c18eda3bf0836a09c10d5ea17840e0af9b164e1af367792f0005a2a250522b7833da60177073eab9c3b696045041b99b53d0922bf8f1259e9006b51022ab10422a2767b083bbd67741bd3ad430738bc4a502f901d033cb17f0623b47643f210073eb07c73fec8911232b2773fa381347c38b552f2ff0548c1d29b0526bd7920b70639b0493a9e020263b20a60e35708080653e8fcef0437b7450f0837b042e8089cfa2e04c9cb12320a22b354f3e20278c4c99d0b22b456d5e5d992092fa772043db451ce0922b62fc19d2cac95fe0330ad2006229435a6645a0936843e914612248b140a62d57de87af13c1db65e0f128c3f83319ec9053b98ead0d76f48073c8126831425a11139842baae90e2b94f5caed7449f41635920f39872f4846e51156e7920b521636960c39862c4550d89df7ec1f1d470c368d1756386a46e4f11b21a10d368c12721733ab633e96347e3a062289184eebe90a3284015cd1f899edc489123689057fb6675fc38c308cc6bf48b348ec170a309b152ebb17a17906200b3098193b98c2e70627a45f0e368a0f18684bb3790033ae1e2e8a07018210084cf51f0a3694f62c5cb76739661804259ae31708329be8f30929a0550c329cecfeece0eb1b335adf940f359ce3f6caa568152696c7914be1f3053d93e2c5d30c3692e3fcbb36ba39b7de88e50e3c99e3e79fffeffaf2a45bdb89c10b328bfbdd7c22a0073591c10a0595d7a44ccbeed79aee0c3e95d1a04ca0750c013c50e40b3699dd8e3f60326b0c5fd0072298d8a70c338c08229bc4a3e5ffd7b911369ac7a2f6ab4cdba12ebb252f91d88be3033c69590836644e8c5cd4792e093c6d50ba3c715eb8070a22622fae4944a242d16b0522613781e7042275299f0d3c6b2191d8692690d67a12ede0093869216138b2e74f0505227c2a630304663b26600837653457c9ac4ba50a3764335fe99bda791c180b3e6a0745a930a6cbba01070c3e6b024c860acbf5db6f08490c057c0d28752b95a744e47a8409066605357114ecf7c7070269033b50a15b08027415092c211b590a127d180211296f247ee80b027a142a0f10a4e094eb9d081c405dc1efb33291051660ece4c30a1d73e1f4aa3c6d140e3a050562e9c781061c7de2d985a706076be7da70e4091275e0db59ad0675f009106bf4b5246b3147b607186ef0a1371b5108017cf0ba0decca9c0a1271cc89f8a13f654a39080173c297c96d0839081b4fcc9cb52677fd090140d861372575ebde0a1c718e420efbae2c69040905549156f5ab6a55c8061e74e169e04f061750cc5cb628061070f97aa8c00c1055d65d9ae81e5f97bb393a0a0249b5286beae814045c091248b5244fa00e3b350a1c7398120757b488d1e0017d0a3649a5280afdb929ee99062259a61ee1ab040a15fedf0171093655abd6b2fdb3e1a406325e8df59caa09225792ea7ef98fc1760b6202dc8210fc5c4d982596316c0fcdd93b65ca75e7c40147e1b7b9ccf55ba6981dda08d68b64677d5da6c433a0c8d8e0b557c041ad29d95b529dc6248f0a6a1595bd2a394a9899810b2559b39d23ca9bb50d00ef096a1787b9f8a74ab3c10e365d8fb0d178de7cc50b487be0ad09065c9cbfaf302879c81012486716e89fc6e25e69c783aa19ff8b0f365e7131d05b82b4382d09e7b5febf04344a68e608365878c191d07e7211036a53ce6718c377929ab1ce499dae1ccc143c5069f443f16761e3be3fda2a4588b0e79d87a517262575da5a8dbb962123fb6eee4bf893939b61f980bffd1c22356fd4714577f1a65df320c270bee887b7bb9e6dfdcededaf54ffc04243072b60a3820449e19c14b72cb3c3e791f15f5a0a18ed597662a7531b8a533bdcbb5aba42ea77fbf729a475aae9a26d26cace795e93d9248a597bbbc86c58ac73ee390d66fb605563480106bc4350f6d19d8826b27a6cdceb7fef2dbe7aaa5d7c8cb3df902833e883cab9efda1229eaef4f2deddc6d5ad872582b5cd51c5051e7cd602113234498db9e5850509dd1801ec86a3ef880a22225ba08bdb2c5667c60b323a569e8a98b49188bcd713222c4244f999948588e0a7f87fc24762ac14ad09322b5477db254693ad04343358780e3e22284581a306e7bbde303f0cdf0424382d4b202936304260bc0bd1497ee46cf50ad63d464977c312d9537ddf454d5a8c7ade39040a37321f01290d323937350a3ea81ed23618d67b0b3637222211ad12d92c25fb0525273a00f60d343a3e06d6334244afe8aa8eb280401017233983388cc4b9a1948e3684de53f07f5fef24ef39ec3dc74d71b6df1ebab7db02d2118c8d8f8b9d75cde0526284608c6772e2fd8caf7c42db22c20179b50e302517ed8ea5eeb2fc2348469577012101230737361ce14d62fe020f0401670c372c29b015a1e180828ecc1b036e2c41123430e3b9ca2e013ee0012d2e362008c45b5c08233af781a0efbed90237100e0e03f3869260f94f5142ad9a748f0c0e10ef8a4cb8fd79bfb4c02c072517ce76cb2824033502e503300cfc013f013709221cc2455e5fd712870125093008c32737fb63daf70a2502c03600b0f162bd9813390dc33ae76fb8c478522d3009969b93768d7f0c3508c20ec42d11ea62bfc616083d0fd615b1f371840a230ac815b5b2ef4770940f3006deec995cabdc0dcf332bf75225092212b0eb68a5f321010a2211b4fc4c7c96aad206103516bfc85d2d32cd320fd7d462c8e57a0a2106a2c82ef26dbd71de073314a4c117bed7092519a1a3e75c8b886908251ebaadde2403a60a2511b6b6b3e64169cfa1073609ab95b6a9d60b3b09a4889a629f48a8e94e0b2117908860a5c23dbbb5dd0a2515849f55618a6eb0a90a340b8971fee0726ad5f4013c0b22069d628e7698918173760c3fe183487db083a4f12c0e990523f59963730937f2a8504d2af22e0f0b0edc77d8e65c5a5135fb030832e86caddf0ca26f0a25ec65b4bbc71e934d6f0b34fe78b98b9871221b93260330eb630c36ed67bc7f9e5f5f14c3fc4e0324fb7a2c3fe57460af9df03bf9553b6f8e3767b3d7563dd5d5ef4775dcea544264e70c39ef04c56e5c38cea4bbaa6d3d0b35e47045b086757f7f91520821fe4e62935f32dc0461bd142f0861be181a007059e10260bf0535f54d4806053ffe5c251c0b33fd5228c32101ec8935010a33fc5d20f51e944027ab0520e15816be0630e63304b9940921f730109522159b730925e318f7759b2917ce0677ed3ee2487d083ff620f7212e78810a65a86bab59f28881af790937fe03c2078a2dee740821f32ac6d810315d0e09d010f3dd096053b970ab6d81480401d133921022fa179cbe8d25c600881cd4fb06b28e0c12cf09ad922df60c7b2adef61030d11a8e6663bd778c744d17048524ce0422c700890e22d7108734317f65637f4d5f077a1030c01145ab6380472cbb83481e774036033fca0f036094481339c611784a25c94d31fb0b80684e16ccd8abae0630c4f76c27fe0732ddf45c11a1b7073ccffe5a3d6e790822c3e425ff0be34f01351339ccfa33d3a1829922dcc4cce526e1fd28ddc70e32c6f90cbb6b685c901c9025cad60a25c0ee099921f432a9a30925dfea1665676b80310725ded71d4d22ee0537ddd4ea240825dcdcf23ea1b66f0732d8c4f91d79570732d9d9c0e43cfd01280930d3d3ecd38b8a592903608a890938caeabe8538dbcffb036088f70c36deb19a5722c9ec20624df6093cd3bc995bf50e9d2c073cd2b98030be83093cd1a58d1778421c61073adaaa62687d7d053aa5ae64530e27a0b6735fef2b8f12d2fcac76690822a7b04113b465490124013d01301032a9813ccfbd6e39e8b56404706a18490524a5ba26be0c22ad9d3baf3bb35e21a3971d0360fbc51223af971c543ca251f3d91431c4a199124aef1323ae901441eb2c7b4d036e00a37569328732990d38bf4468755aff1256d73d8602140ea86a6e491e4035676e25816741f92349e633940c38a07c7f3adfba47e0260090103eb96e502f9800605520a99c2a35a07e0f0eb16c721056e3e02b8f3888092fa8150eb36b42f4116fec34840d6725a789f70293fcfe0e0437a778220930a17e3caf97056e220e0fb7723aab5eccd180b681f030ce016a0e0eb45d1c765bf1a690ff0b368823110eb851155a075ffef0c40548116fd4bb720d0eba520f21d8b637930927b2250a0ebb57f0399ddd2f85ec073eb453ed1732c1063eb559f8ec11093eb255cdcbdb91142e0b3eb350c4a09df51c7f146f0a3eb030c4b124b29fff09093eb137d79e1d29bf610b0e932eae615ecc9d13757a0b0e8333a642180d88084409123e8c3cb822a77d5bf70656122f8a3b695fd10c238622953797ff180c84eac107258d38951a37b00624953496ed192130962c6840e5114edd890a0f0f7c84fef64326a140c0cc115fc8aa55a95ed79ccd04228e38620e3886177228604ffdf13421a655d909269b07503425b06c2307038f1b5eebf4020316ae39063c890556af620b25822137a725ba5e133b85053282173c9104258a032e160eaf1e067aef1429701047effaffebf3f18f1804326c053794f60d550d2287f609367832ae116c338002140e94ecf52825ba51c5a20b43d0aa55be65ca89cc073991ece8eefbf60c329afee1c7aa6e5f3b81d0a0063993f5c4da7f071992f6ccb131aa0b2488ffd284efc2fdcca85712359cfdd36c22b02319bcda90c297c6841e2305219bd0b4410f338ecca35d8d7808273853e5c1a423082399cfbf247f32630e2398ca861f358c0d270b5aad4bda043c91d48b0b328dd692faa85dc8af2cad05326154a97e0823645ea341df6e2909386c4ab0287356af1b0e3666358f0140b559cc68066da221100e713784d3e5080f10043e75d389e6fc0b23603f83f1cf76252848be081e5405bbfc4a71dd0b5b550a5318b3e7470dc19909346630600224b0d2cc08337c3f741a2b0dee0c7755294afdab50b452db8aa20c6e542e42c894d664051359dc0938621553be2794d2aa19387e2d51900ae2fed16d2f5ba4f7c7751ec5fd92e7d19ba74d0d13771c2f64099eb051b35bb21a073e7f1f3b7a13f104387e06290e347f130425641e71021e3b13f0ee0f24601a23003f733963ecf586de740c040e771f09022476032266ef0f2777e8f1af2a7815242f3692a53f501e3e67f3c98fefb4a429919261d25baa07296988d1d341fffea906392a49f8273e68ffc293a667600f29691f1dd6cb710128304d88f03ed385ae155fb0bb0bb887d1548edf273b10367ce0e475f1c8a9fbb736acb008140f12367ffcea42a00140c465fbb32948fb8ec084090562e5a200732a5ca52a127df7bc0d3f32e6ca98b4248dafa2d093bee1c871cc99bab4b3e3f6eacd576f58ea91cfa50de6b3f3960e397cef940eebf481d659a730771f0c3271ce80ffa82b37660f010b14216dcc9ece76102c79a63712e3b51bec8ed85b950e254feb96a42a7af69f28376511f8072740c6773a07760d3851fe7f14fbad377f1f13c6df201e41db70f3b16473f99ed0dab618f8b5e3dc169da7430b04158963f3b4c565f205630a840e9903334add293952c84492a8e14a27294dbca4b22556b4393e6c77cd6baec25d630bc764b173b6e21ad33266988fa6233953cb4c85f279158db13e2a06be0407fdb41db884dd42c7cf247ac0536950ce791e8823395cb73761b5e777397019fcc2cb5986a21cf0ddb315c921ef97b6f9b6ece30c9f1e8d0a631ff3641eff576d712103601bfb03601afd03744ff1027c130d3241b4edde2c8398eda3efebe68041106d98ce840d628f141f0958ef48cee569532bf75ac852df9427d7244c928caf1dde242d527bae1cc6437cdd36495f8a7dd6303768448c45f7b1ded4ef8358edb4090e53b0f8ade0bdfbb2036c0cdf026c0f08325c84c154a91f0e03215b9a0a0e6a95b6173f5c8886d9", []);
// window.byted_acrawler.init({
//     aid: 24,
//     dfp: true
// });
// window.byted_acrawler.init({
//     aid: 99999999,
//     dfp: !0
// });
function getParams(__ac_nonce) {
    var url = 'https://www.toutiao.com/i6824014300391145991/';
    var _e = "https://www.toutiao.com/toutiao/api/pc/feed/?min_behot_time=0&category=__all__&utm_source=toutiao&widen=1&tadrequire=true&as=A1358EEDC5CC230&cp=5ED5CCF2F3509E1";
    var a = {
        url: _e
    };
    console.log(11111);
    o = window.byted_acrawler.sign("", __ac_nonce);
    // o = window.byted_acrawler && window.byted_acrawler.sign ? window.byted_acrawler.sign(a) : "";
    console.log(o);
    return o
}
// var ac_nonce='05ed67a92008641cc7566';
// getParams(ac_nonce);
return getParams(aaa)
}
"""


def get_params(ac_nonce):
    node = execjs.get()
    # ctx = node.compile(open('encryption.js', 'r', encoding='gbk').read())
    ctx = node.compile(toutiaohao_sign_js)
    p = ctx.call('getParams', ac_nonce)
    # print(json.dumps(p, indent=4, ensure_ascii=False))
    return p


def get_params2(ac_nonce):
    ctx = js2py.EvalJs()
    ctx.execute(toutiaohao_sign_js)
    p = ctx.getcc(ac_nonce)
    # print(json.dumps(p, indent=4, ensure_ascii=False))
    return p


def test():
    ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
    headers = {
        "User-Agent": ua,
    }
    s = requests.Session()
    url = 'https://www.toutiao.com/a6833748976353673740/'
    resp = s.get(url, headers=headers)
    print(resp.text)
    resp_cookie = resp.cookies.get_dict()
    x = resp_cookie['__ac_nonce']
    print(x)
    nonce = '05ed723d0003d74633212'
    __ac_signature = 'FLCARAAgEBDrT3-7XfZ9mRSwAVAAEps'
    print(__ac_signature)
    Cookie = '__ac_nonce=' + nonce + '; ' + '__ac_signature=' + __ac_signature
    print(Cookie)
    headers.update({"Cookie": Cookie})
    resp = s.get(url=url, headers=headers).text
    print(resp)


if __name__ == '__main__':
    test()
    # ac_nonce = '05ed67a92008641cc7566'
    # __ac_signature = get_params(ac_nonce)
    # __ac_signature = get_params2(ac_nonce)
